/*
 *  您可以更改此项目但请不要删除作者署名谢谢，否则根据中华人民共和国版权法进行处理.
 *  You may change this item but please do not remove the author's signature,
 *  otherwise it will be dealt with according to the Copyright Law of the People's Republic of China.
 *
 *  如果需要联系到我请加Wechat: yangbuyiya 备注交流学习
 *  If you need to contact me, please add Wechat: yangbuyiya as a note to exchange and learn.
 *  yangbuyi Copyright (c) https://yby6.com 2024.
 */

package com.yby6.utils.file;

import cn.hutool.core.codec.Base64Decoder;
import org.noear.solon.core.handle.DownloadedFile;
import org.noear.solon.core.handle.UploadedFile;

import java.io.ByteArrayInputStream;

/**
 * 文件操作工具类
 *
 * @author Yang Shuai
 * Create By 2024/06/19
 */
public class FileUtil {
    
    /**
     * base64字符串转换为DownloadedFile
     *
     * @param base64 Base64字符串
     * @return DownloadedFile
     */
    public static DownloadedFile base64ToDownloadedFile(String base64) {
        // 去掉base64字符串的前缀（如果有）
        String[] base64Array = base64.split(",");
        String data = base64Array.length > 1 ? base64Array[1] : base64Array[0];
        
        // 解码Base64字符串
        byte[] decodedBytes = Base64Decoder.decode(data);
        
        // 推断文件类型，如果base64字符串有前缀信息则使用前缀信息
        String mimeType = "audio/ogg"; // 默认MIME类型为音频文件
        if (base64Array.length > 1 && base64Array[0].contains("data:")) {
            String typeInfo = base64Array[0].split(";")[0];
            mimeType = typeInfo.split(":")[1];
        }
        
        // 创建UploadedFile对象 设置文件名为file 用于后续的文件上传
        return new UploadedFile(mimeType, new ByteArrayInputStream(decodedBytes), "audioFile");
    }
}
